package timehelp

import "time"

// IsToday 判断时间是否是今天
func IsToday(d time.Time) bool {
	now := time.Now()
	return d.Year() == now.Year() && d.Month() == now.Month() && d.Day() == now.Day()
}

// IsSameDay 判断是否为同一天
func IsSameDay(t1, t2 time.Time) bool {
	return t1.Year() == t2.Year() &&
		t1.Month() == t2.Month() &&
		t1.Day() == t2.Day()
}

// GetStartOfDay 获取当前时间当天开始时间
func GetStartOfDay(t time.Time) time.Time {
	return time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location())
}

// GetEndOfDay  获取当前时间当天结束时间
func GetEndOfDay(t time.Time) time.Time {
	return time.Date(t.Year(), t.Month(), t.Day(), 23, 59, 59, 999999999, t.Location())
}

// LastDayOfYear 获取一年的最后一天
func LastDayOfYear(t time.Time) time.Time {
	// 获取下一年的第一天，然后减去1纳秒
	nextYear := time.Date(t.Year()+1, 1, 1, 0, 0, 0, 0, t.Location())
	return nextYear.Add(-time.Nanosecond)
}

// NowBeijing 获取当前北京时间（UTC+8）（不依赖系统时区）
func NowBeijing() time.Time {
	return time.Now().UTC().Add(time.Hour * 8)
}

// IsLeapYear 闰年判断逻辑
func IsLeapYear(year int) bool {
	return (year%4 == 0 && year%100 != 0) || year%400 == 0
}
